home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / jack / thread.h < prev    next >
C/C++ Source or Header  |  2005-12-20  |  3KB  |  84 lines

  1. /*
  2.     Copyright (C) 2004 Paul Davis
  3.  
  4.     This program is free software; you can redistribute it and/or modify
  5.     it under the terms of the GNU Lesser General Public License as published by
  6.     the Free Software Foundation; either version 2.1 of the License, or
  7.     (at your option) any later version.
  8.  
  9.     This program is distributed in the hope that it will be useful,
  10.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.     GNU Lesser General Public License for more details.
  13.  
  14.     You should have received a copy of the GNU Lesser General Public License
  15.     along with this program; if not, write to the Free Software
  16.     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  17.  
  18.     $Id: thread.h,v 1.3 2004/09/15 16:56:04 joq Exp $
  19. */
  20.  
  21. #ifndef __jack_thread_h__
  22. #define __jack_thread_h__
  23.  
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27.  
  28. #include <pthread.h>
  29.  
  30. /** @file thread.h
  31.  *
  32.  * Library functions to standardize thread creation for JACK and its
  33.  * clients.  These interfaces hide some system variations in the
  34.  * handling of realtime scheduling and associated privileges.
  35.  */
  36.  
  37. /**
  38.  * Attempt to enable realtime scheduling for a thread.  On some
  39.  * systems that may require special privileges.
  40.  *
  41.  * @param thread POSIX thread ID.
  42.  * @param priority requested thread priority.
  43.  *
  44.  * @returns 0, if successful; EPERM, if the calling process lacks
  45.  * required realtime privileges; otherwise some other error number.
  46.  */
  47. int jack_acquire_real_time_scheduling (pthread_t thread, int priority);
  48.  
  49. /**
  50.  * Create a thread for JACK or one of its clients.  The thread is
  51.  * created executing @a start_routine with @a arg as its sole
  52.  * argument.
  53.  *
  54.  * @param thread place to return POSIX thread ID.
  55.  * @param priority thread priority, if realtime.
  56.  * @param realtime true for the thread to use realtime scheduling.  On
  57.  * some systems that may require special privileges.
  58.  * @param start_routine function the thread calls when it starts.
  59.  * @param arg parameter passed to the @a start_routine.
  60.  *
  61.  * @returns 0, if successful; EPERM, if the calling process lacks
  62.  * required realtime privileges; otherwise some other error number.
  63.  */
  64. int jack_create_thread (pthread_t *thread,
  65.             int priority,
  66.             int realtime,    /* boolean */
  67.             void *(*start_routine)(void*),
  68.             void *arg);
  69.  
  70. /**
  71.  * Drop realtime scheduling for a thread.
  72.  *
  73.  * @param thread POSIX thread ID.
  74.  *
  75.  * @returns 0, if successful; otherwise an error number.
  76.  */
  77. int jack_drop_real_time_scheduling (pthread_t thread);
  78.  
  79. #ifdef __cplusplus
  80. }
  81. #endif
  82.  
  83. #endif /* __jack_thread_h__ */
  84.